package com.fessc.develop.entity.comvo;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fessc.develop.utils.CcyConvert;
import com.fessc.develop.utils.NatConvert;
import lombok.Data;

import java.math.BigDecimal;

/**
 * 预付款单笔明细(通用)
 */

@Data
public class PrePaymentOrderVo extends CommonDataSendVo {

    @JsonProperty("batchSerialNo")
    String batchSerialNo; //批次流水号

    @JsonProperty("antcpWthdOrdrNo")
    String suborderno; //预付款订单号

    @JsonProperty("cmdtyName")
    String goodsname; //商品名称

    @JsonProperty("cmdtyNo")
    String goodscode; //商品编码

    @JsonProperty("ioeFlag")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    Integer ietype; //进出口标识

    @JsonProperty("ordrAmt")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    BigDecimal amount; //订单金额

    @JsonProperty("orderCcy")
    @JSONField(serializeUsing = CcyConvert.class)
    String currency; //订单币种

    @JsonProperty("pyrNo")
    String payeraccountnumber; //付款人账号

    @JsonProperty("payerAcctName")
    String payeraccountname; //付款人账户名称

    @JsonProperty("pymtBnkName")
    String Payerbankname; //付款银行名称

    @JsonProperty("pymtBnkNo")
    String payerbankcode; //付款行号

    @JsonProperty("payerName")
    String bordername; //付款人姓名

    @JsonProperty("payerIdentNo")
    String borderidnumber; //付款人证件号

    @JsonProperty("pymtAmt")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    BigDecimal totalAmount; //付款金额

    @JsonProperty("prprStlmntName")
    String settlementname; //待结算户户名

    @JsonProperty("prprStlmntAcctNo")
    String settlementaccount; //待结算户账号

    @JsonProperty("prprStlmntBnkName")
    String settlementbankname; //待结算户所在行

    @JsonProperty("prprStlmntBnkNo")
    String settlementbankcode; //待结算户行号

    @JsonProperty("clctnAcctNo")
    String payeeaccountnumber; //收款方账号

    @JsonProperty("clctnAcctName")
    String payeeaccountname; //收款方账户名称

    @JsonProperty("clctnBnk")
    String payeebankname; //收款行

    @JsonProperty("clctnCountry")
    @JSONField(serializeUsing = NatConvert.class)
    String payeecountry; //收款方国别

    @JsonProperty("pcdFee")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    BigDecimal costAmount; //手续费

    @JsonProperty("pltmfCode")
    String orgCode; //平台编码

    @JsonProperty("pymtInstNo")
    String institutionCode; //付款机构号

    @JsonProperty("antcpWthdRate")
    String exchangeRate; //预付款汇率

    @JsonProperty("cstmsDclrtnMode")
    String dclmode; //海关申报模式

    @JsonProperty("subOrdrAmt")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    BigDecimal orderamount; //分订单金额(合同总金额)

    @JsonProperty("subOrdrCcy")
    @JSONField(serializeUsing = CcyConvert.class)
    String ordercurrency; //分订单币种

    @JsonProperty("crnprdPymtCcy")
    @JSONField(serializeUsing = CcyConvert.class)
    String payercurrency; //本次付款币种

    @JsonProperty("totOrderNo")
    String orderno; //总订单编号

    @JsonProperty("mktPltfmSname")
    String platShortName; //市场交易平台简称

    @JsonProperty("pymtCcy")
    @JSONField(serializeUsing = CcyConvert.class)
    String paymentCurrent; //付款币种

    @JsonProperty("payeeName")
    String payeeName; //收款人姓名

    @JsonProperty("clctnBnkCode")
    String payeeBankNo; //收款行机构码

    @JsonProperty("mktPltfmAttribution")
    String platBelongRegion; //市场交易平台归属地区

    @JsonProperty("remark")
    String notes; //备注

    @JsonProperty("bsnCtrNo")
    String contractNo; //业务合同号

    @JsonProperty("entrstRltnpCode")
    String delegateCode; //委托关系编码

    @JsonProperty("shopName")
    String shopName; //商铺名称

    @JsonProperty("shopNo")
    String shopNo; //商铺编号

    @JsonProperty("cooprName")
    String coopName; //合作社/互助组名称

    @JsonProperty("cooprSoclCrdtCode")
    String coopOrgCode; //合作社/互助组统一社会组织信用代码

    @JsonProperty("mariEntpName")
    String foreigntradeName; //海运外贸企业名称

    @JsonProperty("mariSoclCrdtCode")
    String foreigntradeCode; //海运外贸企业统一社会组织信用代码

    @JsonProperty("spcfc")
    String specifications; //规格/型号

    @JsonProperty("produceNation")
    @JSONField(serializeUsing = NatConvert.class)
    String produceNation; //产销国

    @JsonProperty("gw")
    String gw; //商品毛重

    @JsonProperty("nw")
    String nw; //商品净重

    @JsonProperty("dist")
    String countyCode; //地区代码

    @JsonProperty("ordrStatus")
    String paymentStatus; //订单状态

    @JsonProperty("cstmsChkStatus")
    String sendStatus; //海关数据核对状态

    @JsonProperty("refundStatus")
    String refundStatus; //退款状态

    @JsonProperty("batchNum")
    String batchNum; //推送第三方放款的批次号

    @JsonProperty("bsnChkNo")
    String paymentRefids; //业务核对编码/付款流水号

}
